【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16 您所在的位置:网站首页 react 变量给变量赋值只赋值不赋地址 【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16

【枚举的定义;枚举变量的定义、初始化和赋值】(学习笔记16

2023-08-19 15:49| 来源: 网络整理| 查看: 265

目录 枚举的定义枚举变量的定义枚举变量的初始化与赋值

使用枚举类型,可以提高程序代码的健壮性和可读性,并且枚举成员属于常量,甚至可以使用枚举成员名作为维的大小,来进行数组的定义

枚举的定义

定义枚举的格式为

enum 枚举名{枚举成员1,枚举成员2,...};

下面来定义一个和方向相关的枚举类型Dir

enum Dir{UP,DOWN,LEFT,RIGHT};

枚举成员属于常量,默认情况下,枚举成员是一个整型值,其第一个枚举成员的值为0,而后续枚举成员的值为其前一个枚举成员的值加1

printf("UP = %d\n",UP); printf("DOWN = %d\n",DOWN); printf("LEFT = %d\n",LEFT); printf("RIGHT = %d\n",RIGHT);

结果如下

UP = 0 DOWN = 1 LEFT = 2 RIGHT = 3

也可以自己设置枚举成员的值

enum Dir{UP,DOWN = 10,LEFT,RIGHT}; printf("UP = %d\n",UP); printf("DOWN = %d\n",DOWN); printf("LEFT = %d\n",LEFT); printf("RIGHT = %d\n",RIGHT);

结果如下

UP = 0 DOWN = 10 LEFT = 11 RIGHT =12

枚举成员是一个常量,可以将其作为定义数组的长度大小,也可以将其作为一个整型值初始化或赋值给一个整型变量,甚至将其作为表达式的一部分

enum Dir{UP,DOWN,LEFT,RIGHT}; char arr[RIGHT]; int i = UP; i = DOWN + 3; 枚举变量的定义

定义好枚举之后,就拥有了相应的枚举类型,可以根据这个枚举类型来定义相应的枚举变量。与结构体和联合体的变量定义方式类似,在定义枚举变量时,也可以采用以下3种不同的方式

(1)先定义枚举,再定义枚举变量

enum Dir dir1;

(2)在定义枚举的同时定义枚举变量

enum Dir{UP = -3,DOWN,LEFT,RIGHT}dir2;

(3)定义无名枚举类型的枚举变量

enum {UP = -3,DOWN,LEFT,RIGHT}dir3;

第一种方式可以定义出具有局部或全局作用域的枚举变量 第二种和第三种定义出来的都是具有全局作用域的枚举变量 由于第三种方式定义的是无名枚举类型,因此,只能在该枚举类型定义处直接定义枚举变量,在其它地方无法定义出该类型的枚举变量

枚举变量的初始化与赋值

在定义枚举变量的同时,可以对其进行初始化

enum Dir dir1 = LEFT;

也可以对枚举变量进行赋值操作

enum Dir dir2; dir2 = DOWN;

可以将枚举成员视为整型常量,而将枚举变量视为整型变量。因此,可以将一个整型值初始化或赋值给枚举变量

enum Dir dir = 2; dir = 1;

编写程序,用键盘上的W、S、A、D四个按键来表示上、下、左、右四个方向,当用户按下相应按键后,程序能够打印输出用户所选择的方向

#include #include enum Dir{UP,DOWN,LEFT,RIGHT}; void printDirect(enum Dir dir) { switch(dir) { case UP: printf("The direction is UP.\n"); break; case DOWN: printf("The direction is DOWN.\n"); break; case LEFT: printf("The direction is LEFT.\n"); break; case RIGHT: printf("The direction is RIGHT.\n"); break; } } int main() { enum Dir dir; char ch; printf("Please determine a direction:\n"); scanf("%c",&ch); ch = islower(ch) ? toupper(ch) : ch; switch(ch) { case 'W': dir = UP; break; case 'S': dir = DOWN; break; case 'A': dir = LEFT; break; case 'D': dir = RIGHT; break; } printDirect(dir); return 0; }

主函数中,首先定义了两个变量,一个是枚举Dir类型的变量dir,一个是字符类型变量ch。在获取用户输入的字符后,将其保存至变量ch中,若用户输入的是小写字母,可以通过三目条件运算符,将存储在变量ch中的小写字母转换为大写字母。接着在switch语句中,当找到与变量ch匹配的case标签后,能够将一个正确的枚举成员赋值给枚举变量dir。最后,将枚举变量dir作为printDirect函数的实参,进行函数的调用

结果如下

Please determine a direction: a The direction is LEFT.


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有